package model.service;

import java.util.List;

import model.dao.IGrupoDAO;
import model.entity.Grupo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

/**
 * 
 * Grupo Service
 * 
 * @author Alex
 * 
 */
@Service(value = "grupoService")
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class GrupoService implements IGrupoService {

	// GrupoDAO is injected...
	@Autowired
	IGrupoDAO grupoDAO;

	/**
	 * Add Grupo
	 * 
	 * @param Grupo
	 *            grupo
	 */
	@Transactional(readOnly = false)
	@Override
	public Integer addGrupo(Grupo grupo) {
		return getGrupoDAO().addGrupo(grupo);
	}

	/**
	 * Delete Grupo
	 * 
	 * @param Grupo
	 *            grupo
	 */
	@Transactional(readOnly = false)
	@Override
	public void deleteGrupo(Grupo grupo) {
		getGrupoDAO().deleteGrupo(grupo);
	}

	/**
	 * Update Grupo
	 * 
	 * @param Grupo
	 *            grupo
	 */
	@Transactional(readOnly = false)
	@Override
	public void updateGrupo(Grupo grupo) {
		getGrupoDAO().updateGrupo(grupo);
	}

	/**
	 * Get Grupo
	 * 
	 * @param int Grupo Id
	 */
	@Override
	public Grupo getGrupoById(int id) {
		return getGrupoDAO().getGrupoById(id);
	}

	/**
	 * Get Grupo List
	 * 
	 */
	@Override
	public List<Grupo> getGrupos() {
		return getGrupoDAO().getGrupos();
	}

	/**
	 * Get Grupo DAO
	 * 
	 * @return IGrupoDAO - Grupo DAO
	 */
	public IGrupoDAO getGrupoDAO() {
		return grupoDAO;
	}

	/**
	 * Set Grupo DAO
	 * 
	 * @param IGrupoDAO
	 *            - Grupo DAO
	 */
	public void setGrupoDAO(IGrupoDAO grupoDAO) {
		this.grupoDAO = grupoDAO;
	}
}
